/****************************************************************************** ** Functions by Derrick Sobodash ** http://www.cinnamonpirate.com/ ** Submitted to ROM Hacking.net on July 3, 2006 ******************************************************************************/ /****************************************************************************** ** n64_read() ******************************************************************************* ** syntax: string n64_read(string filename) ******************************************************************************* ** Reads a Nintendo ROM to a string and deinterleaves if needed. ******************************************************************************/ function n64_read($infile) { $fd = fopen($infile, "rb"); $test = fread($fd, 4); fseek($fd, 0x0, SEEK_SET); $deinterleaved = chr(0x80) . chr(0x37) . chr(0x12) . chr(0x40); $interleaved = chr(0x37) . chr(0x80) . chr(0x40) . chr(0x12); $rom = ""; // Test for interleave if($test == $deinterleaved) $rom = fread($fd, filesize($infile)); else if($test == $interleaved) { for($i = 0; $i < filesize($infile) / 2; $i ++) { $char1 = fgetc($fd); $char2 = fgetc($fd); $rom .= $char2 . $char1; } } else die("Error: n64_read(): Supplied ROM file does not appear to be Nintendo 64 ROM\r\n\r\n"); fclose($fd); return($rom); }